package com.example.langchain4j.common.constant;

/**
 * 提示词
 */
public class PromptConstant {
    // 生成简要案情概要提示词
    public static final String generalJianYaoAnQing = """
            {{document1Content}}{{document2Content}}
            根据用户输入的两个文件,生成案情描述,格式必须严格按照示例,不得自行改变结构或增加额外小标题。
            在生成"位于XXX"这一句时:
            使用消防监督检查记录表中"被查建筑物名称"要用完整的名称包括括号中的内容,联网查询到对应的实际物理地址,必须联网查询!!比如被查建筑物是宜宾市第一人民医院(西区总院),就必须使用这个完整的名称,包括"(西区总院)"联网查询到具体地址;
            严禁使用"被查单位地址";

            如果建筑物名称与单位不同,则必须以建筑物为准,联网查询其实际地址并写入"位于XXX"。
            违法行为必须写进案情文段中,和示例保持一致,不能额外输出"违法行为匹配结果"部分。
            示例模式:先写发现的隐患问题,后写复查情况,再写"涉嫌违反了《中华人民共和国消防法》……之规定"。
            每一条违法行为都必须在文段里和法律条款逐一对应,不能省略。
            人员姓名、时间、通知书编号等,必须严格根据文件实际内容生成,不得编造。
            法律条款必须来自《消防行政处罚裁量权基准(2025.09)》中的"法律规定"列,不得出现"裁量权基准"字样。
            输出文段时不得使用任何 markdown 语法。
            示例格式(必须模仿):
            简要案情: 2025 年04 月25 日,宜宾市消防救援支队防火监督人员谢远、姜兴涛对位于宜宾市文星街65号的宜宾市第一人民医院(西区总院)开展"双随机、一公开"消防监督抽查时发现:CRT 图形显示装置故障;地下室气体灭火系统的钢瓶间无法使用;23 层室内消火栓无水;23 层疏散走道设置杂物柜;综合楼全部避难间设置为病房等问题隐患,并向该单位下发了《责令限期改正通知书》(宜消限字【2025】第0XXX号)。2025 年06 月10 日,宜宾市消防救援支队防火监督人员谢远、李杜(因姜兴涛公差在外进行调整)对上述火灾隐患整改情况进行复查,发现该单位地下室气体灭火系统的钢瓶间无法使用和综合楼全部避难间设置为病房的火灾隐患未整改,涉嫌违反了《中华人民共和国消防法》第十六条第一款第(五)项之规定,建议立案查处。""";


    //生成审批表json格式变量提示词
    public static final String generalShenpibiaoJson = """
            {{document1Content}}{{document2Content}}
            根据上面两个用户上传的文件提取相关信息,并填写下面的模板。
            请严格按照以下 JSON 模板填充,所有字段必须保留,不得新增或删除。
            如果文档中没有对应内容,请填空字符串 ""。
            其中简要案情直接填写{{jianyaoanqingRes}}的内容,不要对简要案情进行任何修改,不要修改,不要修改。
            勾选项必须用 "☑" 或 "☐" 表示,不可用 true/false。
            案情等长文本内容必须完整保留。
            {
              "org_name": "",            // 消防救援机构名称,例如:宜宾市消防救援支队
              "year": "",                // 案号年份,例如:2025
              "case_no": "",             // 案号序号,例如:0002
              "case_source_1": "",       // 案件来源:1.消防监督管理工作中发现(☑/☐)
              "case_source_2": "",       // 案件来源:2.举报(☑/☐)
              "case_source_3": "",       // 案件来源:3.移送(☑/☐)
              "case_source_4": "",       // 案件来源:4.其他(☑/☐)
              "case_reason": "",         // 案由,例如:不及时消除火灾隐患;
              "person_name": "",         // 当事人姓名(个人)
              "person_gender": "",       // 当事人性别
              "person_birth": "",        // 出生日期,格式:YYYY年MM月DD日
              "person_id_type": "",      // 身份证件种类
              "person_id_no": "",        // 身份证件号码
              "person_address": "",      // 住址
              "person_contact": "",      // 联系方式
              "unit_name": "",           // 单位名称
              "unit_legal_person": "",   // 法定代表人
              "unit_address": "",        // 单位地址
              "unit_contact": "",        // 单位联系方式
              "unit_credit_code": "",    // 单位统一社会信用代码
              "case_brief": "",          // 简要案情,直接填写{{jianyaoanqingRes}}的内容,不要进行任何修改,不要修改,不要修改
              "opinion_1": "",           // 立案意见:属本单位管辖(☑/☐)
              "opinion_2": "",           // 立案意见:移送(☑/☐)
              "opinion_3": "",           // 立案意见:不予调查(☑/☐)
              "opinion_4": "",           // 立案意见:其他(☑/☐)
              "law_enforcers": "",       // 执法人员姓名,多个用顿号隔开
              "law_date": "",            // 执法日期,格式:YYYY年MM月DD日
              "main_handler": "",        // 主责承办人
              "assistant_handler": "",   // 协办人
              "leader_name": "",         // 消防救援机构负责人
              "leader_date": ""          // 审批日期,格式:YYYY年MM月DD日
            }
            """;

    // 生成笔录JSON提示词 - 用于模板填充方式
    public static final String generalBiluJson = """
            你是一个消防执法专家,需要根据立案审批表的案件信息生成标准的询问笔录JSON数据。

            **立案审批表JSON数据:**
            {{caseApprovalJson}}

            **生成要求:**
            1. 请严格按照以下 JSON 模板填充,所有字段必须保留,不得新增或删除
            2. 如果文档中没有对应内容,请填空字符串 ""
            3. 从立案审批表中提取真实信息填充对应字段
            4. question_answer数组包含多个问答对,每个问答对包含question和answer两个字段
            5. **只输出JSON代码,不要输出任何说明文字、markdown标记或其他内容**

            **JSON模板格式:**
            {
              "record_number": "",            // 第几次询问（例如："一"、"二"）
              "record_time_start": "",        // 询问开始时间（例如："2025年6月25日10时02分"）
              "record_time_end": "",          // 询问结束时间（例如："2025年6月25日10时30分"）
              "record_place": "",             // 询问地点（例如："宜宾市消防救援支队406办公室"）

              "inquirer_workplace": "",       // 询问人工作单位（从org_name提取）
              "recorder_workplace": "",       // 记录人工作单位（从org_name提取）

              "respondent_name": "",          // 被询问人姓名,从立案审批表的person_name或unit_legal_person提取
              "respondent_gender": "",        // 被询问人性别（例："男"）,从person_gender提取
              "respondent_age": "",           // 被询问人年龄（周岁）,根据person_birth计算
              "respondent_birth": "",         // 出生日期（例："1977年10月6日"）,从person_birth提取
              "respondent_id_type": "",       // 身份证件种类（例："居民身份证"）,从person_id_type提取
              "respondent_id_no": "",         // 身份证件号码,从person_id_no提取
              "respondent_residence": "",     // 户籍所在地（身份证上地址）,从person_address提取
              "respondent_address": "",       // 现住址（根据询问填写）,从person_address提取
              "respondent_contact": "",       // 联系方式（例："18888888888"）,从person_contact提取

              "case_name": "",                // 案件名称（例："宜宾市第一人民医院消防隐患案"）,从unit_name+case_reason组合生成

              "questions": [
                "这是《消防机构权利义务告知书》，请你自己看，看后请签名、捺指印；如果不识字，我们可以向你宣读。",
                "诬告或者作伪证要承担法律责任，你是否清楚？",
                "你是否人大代表或政协委员？",
                "是否受过消防行政处罚？",
                "请介绍一下你的个人基本情况？",
                "你在该单位担任什么职务？",
                "你的工作职责是什么？",
                "请你介绍一下[从unit_name提取]的基本情况？",
                "[从case_brief提取检查日期、执法人员、单位地址、单位名称、发现的问题]，你知道吗？",
                "我单位下发的《责令限期改正通知书》，要求于[从case_brief提取改正期限]前改正，你单位是否收到？",
                "那《责令限期改正通知书》的内容，你是否清楚？",
                "以上所说都是属实的吗？",
                "你还有什么需要补充的吗？",
                "你是否有阅读能力？",
                "以上笔录内容你看下，是否与你所说的相符？"
              ]
            }

            **字段填充说明:**
            1. record_number: 默认填写"一",表示第一次询问
            2. record_time_start/record_time_end: 根据当前时间或law_date生成合理的时间
            3. record_place: 从org_name派生,格式为"[org_name]办公室"或具体地址
            4. inquirer_workplace: 从org_name提取,作为询问人工作单位
            5. recorder_workplace: 从org_name提取,作为记录人工作单位
            6. respondent_*字段: 从立案审批表的person_*或unit_legal_person字段提取
            7. case_name: 从unit_name和case_reason组合,例如"XX单位消防隐患案"或"XX单位不及时消除火灾隐患案"
            8. questions数组:
               - 根据案件信息动态填充问题中的占位符(如[从xxx提取])
               - 问题需要根据立案审批表中的实际信息生成,不要保留占位符标记

            **重要提醒:**
            - 所有字段值必须从立案审批表JSON中提取,不得编造
            - 时间格式统一为"YYYY年MM月DD日HH时MM分"
            - 只输出JSON,不要markdown标记或说明
            - 确保JSON格式正确,可被解析
            """;

    // 生成行政处罚告知笔录JSON提示词
    public static final String generalGaozhiJson = """
            你是一个消防执法专家,需要根据立案审批表的案件信息生成标准的行政处罚前告知笔录JSON数据。

            **立案审批表JSON数据:**
            {{caseApprovalJson}}

            **告知类型:**
            {{gaozhi_type}}

            **裁量标准智能体建议（包含法律依据和罚款建议）:**
            {{chaiLiangAdvice}}

            **从裁量建议中提取的信息:**
            - 法律依据: {{lawBasis}}
            - 建议罚款金额: {{punishmentAmount}}

            **生成要求:**
            1. 请严格按照以下 JSON 模板填充,所有字段必须保留,不得新增或删除
            2. 如果文档中没有对应内容,请填空字符串 ""
            3. 从立案审批表中提取真实信息填充对应字段
            4. inform1和inform2根据告知类型填充：
               - 如果告知类型是"处罚前告知"：inform1="☑"，inform2="☐"
               - 如果告知类型是"听证告知"：inform1="☐"，inform2="☑"
            5. **法律依据和罚款金额必须优先使用裁量标准智能体提供的建议**
            6. **只输出JSON代码,不要输出任何说明文字、markdown标记或其他内容**

            **JSON模板格式:**
            {
              "org_name": "",                  // 消防救援机构名称，从立案审批表的org_name提取
              "execution_org": "",             // 执行告知单位（通常与org_name相同）
              "informers": "",                 // 告知人姓名，从law_enforcers提取
              "informed_person": "",           // 被告知人名称，从unit_name或person_name提取
              "legal_person": "",              // 单位法定代表人或主要负责人姓名，从unit_legal_person提取
              "inform1": "",                   // 处罚前告知标识（"☑"或"☐"），根据告知类型自动填充
              "case_brief": "",                // 案情简要描述，从case_brief提取并简化为易读的格式
              "evidence_files": "",            // 证据说明，标准格式："消防监督检查记录、责令限期改正通知书、现场照片、询问笔录等"
              "law_basis": "",                 // 法律依据条款，**必须优先使用{{lawBasis}}**，如果为空则从case_brief末尾提取
              "punishment_target": "",         // 处罚对象说明，单位案件填"你单位"，个人案件填"你本人"
              "punishment_amount": "",         // 处罚金额，**必须优先使用{{punishmentAmount}}**，格式必须包含"元整"
              "inform2": "",                   // 听证告知标识（"☑"或"☐"），根据告知类型自动填充
              "hearing_submit_to": ""          // 听证申请提交机构名称，从org_name提取
            }

            **字段填充说明:**
            1. org_name/execution_org: 从立案审批表的org_name提取
            2. informers: 从law_enforcers提取，保持原格式（如"谢远、李杜"）
            3. informed_person: 单位案件从unit_name提取，个人案件从person_name提取
            4. legal_person: 从unit_legal_person提取
            5. inform1/inform2: 根据{{gaozhi_type}}自动设置勾选状态
            6. case_brief: 将立案审批表中的case_brief简化为更易读的格式，保留关键事实
            7. evidence_files: 标准格式，列举常见证据类型
            8. law_basis: **必须优先使用{{lawBasis}}变量提供的法律条款**，如果为空才从case_brief中提取
            9. punishment_target: 根据是否为单位案件自动判断
            10. punishment_amount: **必须优先使用{{punishmentAmount}}变量提供的金额**，如果为空才根据违法情节自行判断
            11. hearing_submit_to: 通常与org_name相同

            **重要提醒:**
            - 所有字段值必须从立案审批表JSON中提取,不得编造
            - inform1和inform2的值只能是"☑"或"☐"
            - **法律依据必须使用裁量标准智能体提供的{{lawBasis}}，不要自己编造**
            - **罚款金额必须使用裁量标准智能体提供的{{punishmentAmount}}，不要自己编造**
            - 只输出JSON,不要markdown标记或说明
            - 确保JSON格式正确,可被解析
            """;

    // 生成行政处罚决定书提示词
    public static final String generalPenaltyDecision = """
            你是一个消防执法专家,需要根据立案审批表和裁量标准智能体建议生成标准的行政处罚决定书数据。

            **立案审批表完整内容:**
            {{caseApprovalJson}}

            **询问笔录内容(可选):**
            {{interrogationJson}}

            **简要案情（已从立案审批表中提取）:**
            {{caseBrief}}

            **裁量标准智能体建议（包含法律依据和罚款建议）:**
            {{chaiLiangAdvice}}

            **从裁量建议中提取的信息:**
            - 法律依据: {{lawBasis}}
            - 建议罚款金额: {{punishmentAmount}}

            **生成要求:**
            1. 请严格按照以下 JSON 模板填充,所有字段必须保留,不得新增或删除。
            2. 如果文档中没有对应内容,请填空字符串 ""。
            3. 案件事实描述必须完整、准确、严谨,符合法律文书要求。
            4. **法律依据和罚款金额必须优先使用裁量标准智能体提供的建议**。
            5. **只输出JSON代码,不要输出任何说明文字、markdown标记或其他内容**

            **JSON模板格式:**
            {
              "org_name": "",              // 发文单位（消防救援机构名称）,从立案审批表中提取org_name字段
              "year": "",                  // 文书年份（例：2025）,从立案审批表中提取year字段
              "case_no": "",               // 文书编号序号（例：0002）,从立案审批表中提取case_no字段

              "offender_full_info": "",    // 违法行为人完整信息,格式要求:
                                           // 如果是单位:单位名称、地址、统一社会信用代码、法定代表人姓名/职务
                                           // 如果是个人:姓名、性别、出生日期、身份证件种类及号码、住址、联系方式
                                           // 从立案审批表中提取unit_name/unit_address/unit_credit_code/unit_legal_person
                                           // 或person_name/person_gender/person_birth/person_id_type/person_id_no/person_address/person_contact

              "case_brief": "",            // "现查明"后的案件事实说明,需完整、准确描述违法事实
                                           // **直接使用上面提供的{{caseBrief}}内容,改写为法律文书语言**
                                           // 格式:时间+地点+检查人员+发现的违法事实+下达的文书+复查情况+未整改情况
                                           // 必须包含检查时间、复查时间、责令改正通知书编号、具体违法行为描述

              "evidence_files": "",         // 证据材料清单,填写在"以上事实有……等证据证实"中
                                           // 典型格式:"《消防监督检查记录》《责令限期改正通知书》《现场照片》《询问笔录》"
                                           // 根据实际案件情况列举相关证据材料

              "law_basis": "",             // 处罚所依据的法律条款
                                           // **优先使用上面提供的{{lawBasis}}**
                                           // 如果{{lawBasis}}为空,则从{{caseBrief}}末尾提取法律条款
                                           // 格式:"《中华人民共和国消防法》第X条第X款第(X)项"
                                           // 确保法律引用准确,不得编造

              "punishment_target": "",     // 被处罚对象名称
                                           // 从unit_name或person_name提取,一般与违法行为人一致

              "punishment_amount": "",     // 罚款金额（阿拉伯数字）
                                           // **优先使用上面提供的{{punishmentAmount}}**
                                           // 格式示例:"5000元"、"10000元"
                                           // 如果{{punishmentAmount}}为空,则根据违法情节和case_reason确定适当金额
                                           // 一般火灾隐患未整改案件罚款范围:3000-50000元

              "execution_method": "",      // 执行方式和期限
                                           // 标准格式:"限你（单位）在收到本决定书之日起十五日内,按缴款通知书要求到指定银行缴纳罚款。"
                                           // 或:"限你（单位）在收到本决定书之日起十五日内,将罚款缴至XX银行,户名:XX,账号:XXXX。"

              "appeal_gov": "",            // 行政复议机关
                                           // 格式:"XX市人民政府"或"XX县人民政府"
                                           // 根据org_name所在地确定,例如"宜宾市消防救援支队"对应"宜宾市人民政府"

              "appeal_court": "",          // 行政诉讼法院
                                           // 格式:"XX市XX区人民法院"或"XX县人民法院"
                                           // 根据org_name所在地确定,例如"宜宾市消防救援支队"对应"宜宾市叙州区人民法院"

              "attachment": ""             // 附件说明
                                           // 标准格式:"1.《行政处罚决定清单》"
                                           // 或根据实际情况列举附件
            }

            **重要规则:**
            1. **offender_full_info字段:**
               - 单位案件示例:"宜宾市第一人民医院,地址:宜宾市文星街65号,统一社会信用代码:12510000MB19234567,法定代表人:张三,院长"
               - 个人案件示例:"张三,男,1977年10月6日出生,居民身份证号码511501197710062353,住址:四川省宜宾市XX区XX村,联系方式:13800138000"

            2. **case_brief字段:**
               - **直接使用{{caseBrief}}变量的内容,改写为正式法律文书语言**
               - 去掉"简要案情:"等标识,但必须完整保留时间、地点、人员、违法事实、文书编号等关键信息
               - 示例:"2025年04月25日,本单位防火监督人员谢远、姜兴涛依法对位于宜宾市文星街65号的宜宾市第一人民医院(西区总院)进行消防监督检查,发现该单位存在以下问题:CRT图形显示装置故障、地下室气体灭火系统的钢瓶间无法使用、23层室内消火栓无水、23层疏散走道设置杂物柜、综合楼全部避难间设置为病房,并于当日向该单位下发了《责令限期改正通知书》(宜消限字【2025】第0XXX号),责令于2025年XX月XX日前改正上述火灾隐患。2025年06月10日,本单位防火监督人员谢远、李杜对上述火灾隐患整改情况进行复查,发现该单位地下室气体灭火系统的钢瓶间无法使用和综合楼全部避难间设置为病房的火灾隐患仍未整改。"

            3. **law_basis字段:**
               - **优先使用{{lawBasis}}变量提供的法律条款**
               - 如果{{lawBasis}}为空或不完整,再从{{caseBrief}}末尾提取
               - 确保法律条款引用格式规范:"《中华人民共和国消防法》第X条第X款第(X)项"

            4. **punishment_amount字段:**
               - **必须优先使用{{punishmentAmount}}变量提供的金额**
               - 如果{{punishmentAmount}}为空,则参考裁量建议{{chaiLiangAdvice}}中的建议金额
               - 如果都没有,则根据违法情节确定合理金额(一般5000-20000元)

            5. **appeal_gov和appeal_court字段:**
               - 根据org_name推断所在地
               - "宜宾市消防救援支队"→复议机关"宜宾市人民政府",诉讼法院"宜宾市叙州区人民法院"
               - "XX县消防救援大队"→复议机关"XX县人民政府",诉讼法院"XX县人民法院"

            **输出要求:**
            - 只输出JSON,不要输出任何其他内容
            - 输出的JSON必须是有效的、可解析的
            - 所有字段必须严格按照模板填充,不得遗漏
            - 不得使用markdown代码块标记(如```json)
            - 法律依据和罚款金额必须使用裁量标准智能体提供的建议
            """;

    // 生成证据材料清单提示词
    public static final String formatEvidenceFiles = """
            你是一个消防执法文书专家,需要根据用户上传的证据文件名生成规范的证据材料清单。

            **用户上传的证据文件名列表:**
            {{fileNames}}

            **生成要求:**
            1. 将文件名转换为规范的法律文书证据名称
            2. 统一使用书名号《》包裹证据名称
            3. 多个证据之间不使用逗号或顿号,直接连接
            4. 按照重要性排序:检查记录 > 责令文书 > 笔录 > 照片/视频 > 其他
            5. 规范化文件名称,去除文件扩展名和时间戳等无关信息
            6. 只输出最终的证据清单文本,不要输出任何说明文字

            **文件名映射规则:**
            - 包含"监督检查"或"检查记录" → 《消防监督检查记录》
            - 包含"责令"或"限期改正" → 《责令限期改正通知书》
            - 包含"笔录"或"询问" → 《询问笔录》
            - 包含"照片"或"现场图片"或.jpg/.png → 《现场照片》
            - 包含"视频"或"执法记录仪"或.mp4/.avi → 《执法记录仪视频》
            - 包含"告知"或"处罚前告知" → 《行政处罚事先告知书》
            - 包含"听证"或"陈述申辩" → 《陈述申辩笔录》
            - 包含"送达"或"回证" → 《送达回证》
            - 包含"整改"或"复查" → 《复查记录》

            **输出格式示例:**
            《消防监督检查记录》《责令限期改正通知书》《询问笔录》《现场照片》《执法记录仪视频》

            **注意事项:**
            - 相同类型的证据只保留一个(如多张照片统一为《现场照片》)
            - 不要添加"等"字
            - 不要使用顿号、逗号或其他分隔符
            - 严格按照重要性顺序排列
            - 只输出证据清单,不要输出其他任何内容
            """;
}
